package d2_collections;

import java.util.*;

public class CollectionDemo01 {
    public static void main(String[] args) {
        //1、public static <T> boolean addAll(Collection<? super T> c, T...elements) 给集合批量添加元素
        //典型的泛型方法
        //对上面泛型的解释
        //如果这个泛型是String ,那么集合的类型也是String或者String的父类
        //换句话说,如果集合是String或者String的父类,自然可以加这个进去
        //开发中并不会管这个泛型,你是什么类型的集合,就加什么进去
        //底层肯定是把可变参数进行遍历,然后将得到的数据进行一个一个加进去
        List<String> list = new ArrayList<>();
        Collections.addAll(list, "陈平安", "宁姚", "叶凡", "姬紫月", "秦牧");
        System.out.println(list);


        //2、public static void shuffle(List<?> list) 打乱list集合中的元素顺序
        Collections.shuffle(list);
        list.forEach(System.out::println);//遍历集合
        //应用场景
        //shuffle:可以干什么,洗牌,抽奖->注意只能大论List集合,因为底层是基于数组进行实现的

        //数据准备
        List<Student> students = new ArrayList<>();
        Student s1 = new Student("陈平安", '男', 22, 178.0);
        Student s2 = new Student("宁姚", '女', 24, 172.5);
        Student s3 = new Student("叶凡", '男', 25, 175.0);
        Student s4 = new Student("姬紫月", '女', 26, 169.4);
        Student s5 = new Student("秦牧", '男', 24, 175.5);
        Collections.addAll(students, s1, s2, s3, s4, s5);
        //3、public static <T> void sort(List<T> list) 对List集合中的元素进行升序排序
        Collections.sort(students);//List是可以重复的
        System.out.println(students);
        //4、public static <T> void sort(List<T> list, Comparator<? super T> c)
        //利用sort重载的方法
        Collections.sort(students, (o1, o2) -> Double.compare(o1.getHeight(),o2.getHeight()));
    }
}
